package comp.style.css
{
	import comp.comp_layout;
	use namespace comp_layout;

	import comp.Interface.ICssAchieve;
	import comp.UIComponent;
	
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.display.Bitmap;
	
	public class CssAchieve
	{
		public function CssAchieve()
		{
			
		}
		
		/**
		 * 实现textField中的文本样式
		 */
		public static function mergeTextField(txtf:TextField, css:UIComponent):void
		{
			if(!txtf)
				return;
			
			var tf:TextFormat=new TextFormat;				
			tf.font=css.getStyle("fontFamily");
			tf.size=css.getStyle("fontSize");
			tf.align=css.getStyle("textAlign");
			tf.underline=css.getStyle("underline");
			tf.color=css.getStyle("color");
			tf.bold=(css.getStyle("fontWeight")=="bold");
			if(css.hasOwnProperty("wordWrap"))
				txtf.wordWrap=css.getStyleDefault("wordWrap",false);
			if(css.hasOwnProperty("multiline"))
				txtf.multiline=css.getStyleDefault("multiline",false);
			txtf.antiAliasType=css.getStyle("fontAntiAliasType");//用于此文本字段的消除锯齿类型。 
								//flash.text.AntiAliasType.NORMAL 应用常规文本消除锯齿功能。 这与 Flash Player 7 和更早版本中使用的消除锯齿类型匹配。 
								//flash.text.AntiAliasType.ADVANCED 应用高级消除锯齿功能，这增加了文本的可读性。 （此功能在 Flash Player 8 中可用。） 高级消除锯齿功能可以高品质呈现小尺寸的字体。 它最适合在具有大量小字号文本的应用程序中使用。 建议不要对大于 48 磅的字体使用高级消除锯齿功能。
			txtf.sharpness=css.getStyle("fontSharpness");//此文本字段中字型边缘的清晰度。 
			if(css.hasOwnProperty("textFilters"));
				txtf.filters =css.getStyle("textFilters") //;[new GlowFilter(0x00000, 1, 3, 3, 3)];
			txtf.defaultTextFormat=tf;		
		}
		
		/**
		 * 显示背景到UIComponent
		 */		
		public static function mergeBackGrounde(UIcom:UIComponent):void
		{
			UIcom.graphics.clear();
			var bgClass:Class=UIcom.getStyle("backgroundImage");
			var bgcolor:uint=UIcom.getStyle("backgroundColor");
			var bx:Number=UIcom.getStyle("backgroundImageX");
			var by:Number=UIcom.getStyle("backgroundImageY");
			var re:Boolean=UIcom.getStyle("backgroundRepeat");
			
			if(bgClass)
			{
				var bgimg:DisplayObject=new bgClass();
				var bit:BitmapData=new BitmapData(bgimg.width,bgimg.height,true,0x00);
				bit.draw(bgimg);
				UIcom.graphics.beginBitmapFill(bit,null,re);
			}
			else if(bgcolor)
				UIcom.graphics.beginFill(bgcolor);
			
			if(UIcom.getStyle("borderStyle")!="none")
			{
				var thick:Number=UIcom.getStyle("borderThickness");
				var color:uint=UIcom.getStyle("borderColor");
				var cornerRadius:Number=UIcom.getStyle("cornerRadius");
				var bskin:Class=UIcom.getStyle("borderSkin");
				UIcom.graphics.lineStyle(thick,color,1,true);//-thick*2 -thick*2
				if(bskin)
				{
					var bmp:DisplayObject=new bskin;
					var bitm:BitmapData=new BitmapData(bmp.width,bmp.height,true,0);
					bitm.draw(bmp);
					UIcom.graphics.lineBitmapStyle(bitm);
				}
				UIcom.graphics.drawRoundRect(0-thick,0-thick,UIcom.width+thick*2,UIcom.height+thick*2,cornerRadius,cornerRadius);	
			}
			else
			{
				if(re)
				{
					var paddingBottom:uint=UIcom.getStyle("paddingBottom");
					UIcom.graphics.drawRect(bx,by,UIcom.width,(UIcom.maxHeight>UIcom.height?UIcom.maxHeight:UIcom.height)-by+paddingBottom);
				}
				else
					UIcom.graphics.drawRect(bx,by,UIcom.width,UIcom.height);
			}
			UIcom.graphics.endFill();
		}
	
		/**
		 * 显示模板
		 */
		public static function mergeTemplate(uicom:UIComponent):void
		{
				var t:*=uicom.getStyle("template");
				if(!t)
					return;

				if(uicom.hasOwnProperty("currentSkin"))
				{
//					var _crrentSkin:DisplayObject=uicom["currentSkin"];
					if(!uicom["currentSkin"])
					{
						if(t is Class)
							uicom["currentSkin"]= new t();
						else 
							uicom["currentSkin"]= t;
					}
					
					if(uicom.width!=0)
						uicom["currentSkin"].width=uicom.width;
					if(uicom.height!=0)
						uicom["currentSkin"].height=uicom.height;
					uicom.addChildAt(uicom["currentSkin"],0);
					return;
				}
		}
		
	}
}